
package business;

import dao.FuncionarioDAO;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import vo.FuncionarioVO;

public class Funcionario {
    
    public static List<FuncionarioVO> getFuncionarios() {
        return FuncionarioDAO.getFuncionarios();
    }   
    
    public static List<FuncionarioVO> getFuncionarioPeloCPF(String cpf) {
        return FuncionarioDAO.getFuncionarioPeloCPF(cpf);
    }
    
    public static void insertFuncionario(String cpf, String rg, String nome, String dataNascimento, String cep, String endereco, String numero, String complemento, String login, String senha) {
        
        SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");  
       
        Date dataNascimento_nova = null;
        try {
            dataNascimento_nova = new Date(format.parse(dataNascimento).getTime());
        } catch (ParseException ex) {
            Logger.getLogger(Funcionario.class.getName()).log(Level.SEVERE, null, ex);
        }
        int numero_novo = Integer.parseInt(numero);
        
        FuncionarioVO funcionario = new FuncionarioVO(cpf, rg, nome, dataNascimento_nova, cep, endereco, numero_novo, complemento, login, senha);
        FuncionarioDAO.insertFuncionario(funcionario);
    }
    
    public static void alterarFuncionario(String cpf, String rg, String nome, String dataNascimento, String cep, String endereco, String numero, String complemento, String login, String senha)
    {
        FuncionarioDAO.alterarFuncionario(cpf,rg,nome,dataNascimento,cep,endereco,numero,complemento,login,senha);
        
    }
     public static String getFuncionarioSenhaPorUsuario(String usuario)
     {
         return FuncionarioDAO.getFuncionarioSenhaPorUsuario(usuario);
     }
      public static boolean FuncionarioCadastrado(String usuario)
     {
         return FuncionarioDAO.FuncionarioCadastrado(usuario);
     }
    
 public static boolean FuncionarioExiste(String cpf){
     return FuncionarioDAO.FuncionarioExiste(cpf);
 }
    
    public static void deleteFuncionarioPeloCPF(String cpf){
        FuncionarioDAO.deleteFuncionarioPeloCPF(cpf);
    }
    
       public static boolean validaCPF(String stringCPF)
  {
      int i, soma1, soma2, digito1, digito2;

      if(stringCPF.length() != 11)
        return false;

      if( (stringCPF.equals("00000000000")) || (stringCPF.equals("11111111111")) ||
          (stringCPF.equals("22222222222")) || (stringCPF.equals("33333333333")) ||
          (stringCPF.equals("44444444444")) || (stringCPF.equals("55555555555")) ||
          (stringCPF.equals("66666666666")) || (stringCPF.equals("77777777777")) ||
          (stringCPF.equals("88888888888")) || (stringCPF.equals("99999999999")))
        return false;

      //Calcula o primeiro dígito
      soma1 = 0;
      for(i=0; i<=8; i++)
        soma1 = soma1 + Integer.parseInt(stringCPF.substring(i, i+1)) * (10 - i);

      if(soma1 % 11 < 2)
          digito1 = 0;
      else
          digito1 = 11 - (soma1 % 11);

      //Calcula o segundo dígito
      soma2 = 0;
      for(i=0; i<=9; i++) 
          soma2 = soma2 + Integer.parseInt(stringCPF.substring(i, i+1)) * (11 - i);

      if(soma2 % 11 < 2)
        digito2 = 0;
      else
        digito2 = 11 - (soma2 % 11);

      if( (digito1 == Integer.parseInt(stringCPF.substring(9, 10))) && (digito2 == Integer.parseInt(stringCPF.substring(10))) )
          return true;

      return false;

  }
        public static boolean isDate(String Data)  
   
        {  
                  int Dia=Reserva.GeraDias(Data);
                  int Ano=Reserva.GeraAno(Data);
                  int Mes=Reserva.GeraMes(Data);
                  
                  
                  
                  if((Dia<=0||Dia>=31)||(Mes<=0||Mes>12) || (Ano<=1900))//melhorar esse algoritmo
                  {   //System.out.println("isdate"+Data);
                      return false;}
                  else
                      return true;
  
                                 
        } 
     public static int GeraDias(String Data)
    {
       // System.out.println(Data);
        char dia1=Data.charAt(0);
        char dia2=Data.charAt(1);
        
        String Dia=""+dia1+dia2;
        
        return Integer.parseInt(Dia);
    }
   
    public static int GeraMes(String Data)
    {
        char mes1=Data.charAt(3);
        char mes2=Data.charAt(4);
        
        String mes=""+mes1+mes2;
        
        return Integer.parseInt(mes);
    }
    
    public static int GeraAno(String Data)
    {
        char ano1=Data.charAt(6);
        char ano2=Data.charAt(7);
        char ano3=Data.charAt(8);
        char ano4=Data.charAt(9);
        
        String Ano=""+ano1+ano2+ano3+ano4;
        
        return Integer.parseInt(Ano);
    }
}
